#!/bin/zsh -f

# usage:  gdirs [-fF]

#  gdirs -f cd's both terminal and finder to chosen directory
#  gdirs -F cd's only the Finder to the chosen directory
#  gdirs with no argument changes only the terminal directory

CDD=OFF ; CDF=OFF

if [[ $1 == '-f' ]];then
 CDD=ON
elif [[ $1 == '-F' ]];then
 CDF=ON
else
 CDD=OFF ; CDF=OFF
fi

################################################################################
# function ChooseFile allows picking from filtered list of files in $PWD
# returns name of chosen file as a string

function ChooseFromStack {
#
# Change this first line for particular filtering needs:
#
# =========>
#

	filelist=($(print $global_dirs | perl -p -e 's| |\n|g' | perl -p -e 's|_SPACE_|\*|g' ) )

	item_list="" 

	for item in "${filelist[@]}" 
	do 
		item_list="$item_list""\"${item}\"," 
	done 

	function filepicker {
		osascript << eof 
			tell app "Finder" 
				activate 
				choose from list {${item_list%,}} with prompt "Choose a recent directory: " 
			end tell
eof
	} 
	
	
	
	SelectedFile=$(filepicker) 

	
	if [[ $SelectedFile == false ]]; then
	   print "Selection has been cancelled."
	   return 1
    fi
	

  if [[ $CDD == ON ]];then
    cd "$SelectedFile"; open . ; pwd
    return 0

        
  elif [[ $CDF == ON ]];then
    cd "$SelectedFile"; open . ; cd "$OLDPWD"
    return 0

    
  else
	cd  "$SelectedFile"; pwd 
    return 0
    
  fi
}

################################################################################

# run the function:

ChooseFromStack


if [[ $CDF != ON ]]; then

    if [[ $TERM_PROGRAM == iTerm.app ]]; then
        /usr/bin/open -a iTerm   
        # Returns focus to iTerm.app
        #
    elif [[ $TERM_PROGRAM == Apple_Terminal ]]; then
        /usr/bin/open -a Terminal    
        # Returns focus to Terminal.app
        #
    else
        /usr/bin/open -a X11  
        # Returns focus to xterm, i.e., X11.app
    fi

else
    # Refocus Finder
    # print "focus finder"  #Debug
    /usr/bin/open -a Finder

fi

# re-initialize

CDD=OFF ; CDF=OFF

